package com.zhanglijie.base.sync.mardwordDetail;

import org.openjdk.jol.info.ClassLayout;

/**
 * @author zhanglijie
 * @version 1.0
 * @since 1.1.0 2022/6/18 0018 15:52
 */
public class SlowLockTest {
    static MyObject myObject = null;

    public static void main(String[] args) {
        /**
         * 轻量级锁
         * 虚拟机启动四秒之后才会开启偏向锁，所以立马打印打印的就是轻量级锁
         * （11011000 11110110 11110100 00000010 后面三个byte+第一个byte的前六位表示lockRord的指针，第一个byte最后两个bit表示轻量级锁标志位）
         */
        myObject = new MyObject();
        System.out.println("加锁之前");
        System.out.println(ClassLayout.parseInstance(myObject).toPrintable());
        //加锁
        new BiasedLockTest().testLock();
        System.out.println("加锁之后");
        System.out.println(ClassLayout.parseInstance(myObject).toPrintable());
    }
    public void testLock(){
        synchronized (myObject){
            System.out.println("已经加锁");
            System.out.println(ClassLayout.parseInstance(myObject).toPrintable());
            System.out.println("将退出锁");
        }
    }
}
